import { getUserinfo, login, userInfo } from '@/api/user'
import { getToken, setToken } from '@/utils/auth'
import { Message } from 'element-ui'
import { resetRouter } from '@/router'
export default {
  namespaced: true,
  state: () => {
    return {
      // 保存token
      // 如果有cookie里面有token就直接保存 ，没有就给一个空值
      token: getToken() || '',
      // 用户信息
      info: {}
    }
  },
  mutations: {
    // 用来保存token
    getToken(state, newToken) {
      state.token = newToken
      // 将token持久化保存到cookie里面
      setToken(newToken)
    },
    // 修改用户信息
    getInfo(state, newInfo) {
      state.info = newInfo
    }
  },
  actions: {
    // 发送登录请求获取token
    async userToken(context, data) {
      const res = await login(data)
      console.log(res.data)
      // 把得到的token保存到vuex里面  调用vuex里面的mutations方法
      context.commit('getToken', res.data)
      Message.success(res.message)
    },
    // 发送获取用户信息请求
    async getUserInfo(context) {
      // 获取用户信息无头像
      const res = await getUserinfo()
      // 发送请求获取用户头像
      const resInfo = await userInfo(res.data.userId)
      context.commit('getInfo', { ...res.data, ...resInfo.data })
      return res.data.roles.menus
    },
    // 清空token和info的值
    logout(context) {
      context.commit('getToken', '')
      context.commit('getInfo', {})
      resetRouter()
    }
  },
  getters: {}
}
